/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function (s) {
    const set = new Set();
    let i = 0, j = 0, maxLength = 0;
    if (s.length === 0) {
        return 0;
    }
    for (i = 0; i < s.length; i++) {
        if (!set.has(s[i])) { //如果set中没有该字符，添加进set
            set.add(s[i]);
            maxLength = maxLength > set.size ? maxLength : set.size;
        } else { //如果有，删除重复字符直到没有为止，然后添加该字符
            while (set.has(s[i])) {
                set.delete(s[j]);
                j++;
            }
            set.add(s[i]);//当set中没有重复字符时，再添加进来
        }
    }
    return maxLength;
};